package com.gxc.integer;

import java.util.Scanner;

/**
 * RSA加密算法在网络安全世界中无处不在，它利用了极大整数因数分解的困难度，数据越大，安全系数越高，给定一个32位正整数，请对其进行因数分解，找出是哪两个素数的乘积。
 *
 * 输入描述
 * 一个正整数num，0 < num <= 2147483647
 *
 * 输出描述
 * 如果成功找到，以单个空格分割，从小到大输出两个素数，分解失败，请输出-1, -1
 */
public class RSA {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        if (isPrime(n)) {
            System.out.println("-1 -1");
            return;
        }
        for (int i = 2; i <= Math.sqrt(n) ; i++) {
            if (n % i == 0) {
                int j = n / i;
                if (isPrime(i) && isPrime(j)) {
                    System.out.println(i>j ? j + " " + i: i + " " + j);
                    return;
                }
            }
        }
        System.out.println("-1 -1");
    }

    private static boolean isPrime(int n) {
        if (n <= 3) {
            return n>1;
        }
        if (n % 6 != 1 && n % 6 != 5) {
            return false;
        }
        for (int i = 5; i <= Math.sqrt(n); i += 6) {
            if (n % i == 0 || n % (n + 2) == 0) {
                return false;
            }
        }
        return true;
    }
}
